package com.zp.self.module.level_4_算法练习.数据结构.二叉树;

/**
 * @author  ZengPeng
 **/
public class 力扣_111_二叉树的最小深度 {
    public static void main(String[] args) {
        TreeNode root = TreeNode.initRoot();
        System.out.println( new 力扣_111_二叉树的最小深度().minDepth(root));
        System.out.println( new 力扣_111_二叉树的最小深度().minDepth(null));
    }

    /**
     * 给定一个二叉树，找出其最小深度。
     * 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
     * 说明：叶子节点是指没有子节点的节点。
     *
     * 分析：
     *      递归   获取左右记得点最小长度
     *
     * 边界值注意：
     * 1.root 根节点为空
     * 2.root 根节点只有一个  子节点   , 子叶节点同理
     **/
    public int minDepth(TreeNode root) {
        if(root==null) return 0;
        if(root.left==null) return minDepth(root.right)+1;
        if(root.right==null) return minDepth(root.left)+1;
      return   (Math.min(minDepth(root.left),minDepth(root.right))+1);
    }

}
